package com.huilian.iotbox.data.dto;

import lombok.Data;
import lombok.ToString;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


@Data
@ToString(callSuper = true)
public class ConsumeRecordDto extends QueryParam implements Serializable {

    private static final long serialVersionUID = -5110365500663418145L;
    private Integer id;
    /**
     * 用户会员id
     */
    private Long memberId;

    private Integer userId;
    /**
     * 门店id
     */
    private Integer merchantStoreId;
    private Integer flagIndex;
    /**
     * 关联order表outTradeNo
     */
    private String outTradeNo;
    /**
     * 支付订单表id
     */
    private Long orderId;
    /**
     * 活动订单id
     */
    private Long activityOrderId;
    /**
     * 兑换订单id
     */
    private Integer orderExchangeId;
    private Integer commodityProjectId;
    /**
     * 设备号
     */
    private String deviceNo;
    /**
     * 支付唯一码
     */
    private String payNo;
    /**
     * 投币时的设备类型id
     */
    private Integer deviceTypeId;
    /**
     * 当次消费总币数
     */
    private Integer consume;
    /**
     * 扣除充值
     */
    private Integer deductRecharge;
    /**
     * 扣除赠送
     */
    private Integer deductDonate;
    /**
     * 扣除充值币前余额
     */
    private Integer rechargeBeforeBalance;
    /**
     * 扣除赠币前余额
     */
    private Integer donateBeforeBalance;
    /**
     * 扣除充值币后余额
     */
    private Integer rechargeAfterBalance;
    /**
     * 扣除赠币后余额
     */
    private Integer donateAfterBalance;
    /**
     * 投币方式：1、串口，2、脉冲
     */
    private Integer insertCoinType;
    /**
     * 1、线下投币 2、线上投币
     */
    private Integer coinType;

    /**
     * 余额变化总数，元
     */
    private BigDecimal changeTotal;
    /**
     * 人民币充值金额，元
     */
    private BigDecimal moneyRechargeBalance;
    /**
     * 人民币赠送金额，元
     */
    private BigDecimal moneyDonateBalance;
    /**
     * 人民币充值金额变化前，元
     */
    private BigDecimal beforeMoneyRechargeBalance;
    /**
     * 人民币赠送金额变化前，元
     */
    private BigDecimal beforeMoneyDonateBalance;
    /**
     * 人民币充值金额变化后，元
     */
    private BigDecimal afterMoneyRechargeBalance;
    /**
     * 人民币赠送金额变化后，元
     */
    private BigDecimal afterMoneyDonateBalance;
    /**
     * 充电端口
     */
    private Integer positionId;
    /**
     * 预计充电时长，分钟
     */
    private Integer estimatedChargingTime;
    /**
     * 剩余充电时长，分钟
     */
    private Integer remainingChargeTime;
    /**
     * 预计充电度数，度
     */
    private BigDecimal estimatedChargingPower;
    /**
     * 剩余充电度数，度
     */
    private BigDecimal remainingChargePower;
    /**
     * 充电功率，瓦（W）
     */
    private Integer chargePower;
    /**
     * 当次充电剩余余额，元
     */
    private BigDecimal remainingChargeBalance;
    /**
     * 开始充电时间
     */
    private Date startChargingTime;
    /**
     * 结束充电时间
     */
    private Date endChargingTime;
    /**
     * 结束充电类型：0、购买的充电时或者电量用完了，1、用户手动停止（拔插头，或是按了停止按钮），2、充电满了，自动停止，3、超功率自停，4、远程断电，11、设备或是端口出现问题，被迫停
     */
    private Integer endOfChargeType;
    /**
     * 消费类型id
     */
    private Integer consumeRecordTypeId;
    /**
     * 支付盒子投币状态 和 支付订单状态
     * 0:投币异常，超时返回
     * 1:确认（投币成功），
     * 2:正在投币，
     * 3:投币失败，支付盒子返回状态是投币失败
     */
    private Integer status;

    /**
     * 失败原因
     */
    private String failReason;
    /**
     * 备注
     */
    private String remark;

    private Integer times;

    private String startTime;
    private String endTime;

    private Integer agencyId;

    private Integer month;

    private Long memberStoreBalanceId;

    /**
     * 加密串
     */
    private String sign;
    /**
     * 时间戳
     */
    private Long timestamp;
    /**
     * 6位取币密码
     */
    private String fetchCoinPwd;

    private List<Integer> stateList;
    /**
     * 分支详情ID
     */
    private Long displayRackItemId;
    /**
     * 充电方案类型，1充到满，2推荐方案，3自定义金额
     */
    private Integer chargingSchemeType;
    /**
     * 充电方案费用
     */
    private BigDecimal chargingSchemeMoney;
    /**
     * 充电时间，小时
     */
    private Integer chargingTime;
    /**
     * 充电费率ID
     */
    private Long chargingPileRateStageId;

    private int[] consumeRecordTypeIdArray;
    /**
     * 场地ID数组
     */
    Integer[] merchantStoreIdArray;

    /**
     * 收款商户类型  1.平台商户   2.自有商户   3.现金收款
     */
    private Integer[] mchTypeArray;
    /**
     * 1、线下投币 2、线上投币
     */
    private Integer[] coinTypeArray;
    /**
     * 0、出币 1、投币
     */
    private Integer currentStatus;

    /**
     * 投币 出币状态
     */
    private Integer monetaryStatus;
    /**
     * 子单，由母单分裂出多条子单，根据parentConsumeRecordId找到母单
     */
    private Integer parentConsumeRecordId;

    private List<ConsumeRecordDto> consumeRecordDtoList;
    /**
     * 套餐ID
     */
    private Long discountPackageId;
    /**
     * 连锁单，0/null：不是，1：是
     */
    private Boolean isChain;
    /**
     * 兑币机出币、娃娃机投币等等上报账目状态，0、待上报，1、上报成功，2、超时未上报
     */
    private Integer uploadAccountStatus;
    /**
     * 预测账目上报的自增码
     */
    private Integer forecastUploadAccountCode;
    /**
     * 操作人id
     */
    private Integer operationUserId;

    /**
     * 消费类型集合
     */
    private List<Integer> consumeRecordTypeIdList;

    /**
     * 2支出 1收入
     */
    private Integer expenditureStatus;
    /**
     * 层级，如第一层、第二层
     */
    private Integer hierarchy;

    /**
     * 货道，如货道1、货道2
     */
    private Integer freightLane;

    private String endDateStr;
    private String startDateStr;
    private Integer fetchCoinType;
    /**
     *模糊搜索条件分支
     */
    private Integer comprehensiveConditionId;
}
